﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using DA_OOMModel;
using DA_OOMModelIDAL;
using DA_OOMDALFactory;
using System.Collections;

namespace DaCredito
{
    public partial class CadastroDadosBancarios : WebPageForm
    {

        protected void Page_Load(object sender, EventArgs e)
        {

           
        }

        protected override void PrePageLoad()
        {

            base.PrePageLoad();

            this.ioTipoEntidade = typeof(ContaBancaria);
            this.ioTipoPKEntidade = typeof(ContaBancariaPK);
            this.ioListaTipoEntidadeSecundaria = new Type[2] { typeof(Convenio), typeof(Agencia) };

        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);


        }
        protected void CadastrarDadosBancariosButton_Click(object sender, EventArgs e)
        {
            this.OnSave();
            return;
        }

        protected override bool OnUpdate()
        {

            // ---------------------------------
            // Cadastro do Banco
            // ---------------------------------
            int liIdBanco = Column_BncIdBanco.Value == "" ? 0 : Convert.ToInt32(Column_BncIdBanco.Value);

            IBancoDAL loBancoDAO = ConcreteDALFactory.CreateBancoDAL();

            Banco loBanco = loBancoDAO.Load(new BancoPK(liIdBanco));
            if (loBanco == null)
            {
                loBanco = new Banco();
                loBanco.BncNmBanco = "Banco do Brasil";
                loBanco.BncNuBanco = "001";
                loBanco.BncNuCnpj = "00000000000";
                loBanco.BncNuDigitoBanco = "0";
                
            }


            // ---------------------------------
            // Cadastro da Agencia
            // ---------------------------------
            int liIdAgencia = Column_AgcIdAgencia.Value == "" ? 0 : Convert.ToInt32(Column_AgcIdAgencia.Value);

            IAgenciaDAL loAgenciaDAO = ConcreteDALFactory.CreateAgenciaDAL();

            Agencia loAgencia = loAgenciaDAO.Load(new AgenciaPK(liIdAgencia));
            if (loAgencia == null)
                loAgencia = new Agencia();

            loAgencia.AgcNuAgencia = Column_AgcNuAgencia.Text;
            loAgencia.AgcNuDigitoAgencia = "0";
            loAgencia.AgcNuCnpj = "00000000000";
            loAgencia.AgcNmAgencia = "00000000000";
            loAgencia.Banco = loBanco;

            // ---------------------------------
            // Cadastro do ContaBancaria
            // ---------------------------------
            int liIdContaBancaria = Column_CnbIdConta.Value == "" ? 0 : Convert.ToInt32(Column_CnbIdConta.Value);

            IContaBancariaDAL loContaBancariaDAO = ConcreteDALFactory.CreateContaBancariaDAL();

            ContaBancaria loContaBancaria = loContaBancariaDAO.Load(new ContaBancariaPK(liIdContaBancaria));
            if (loContaBancaria == null)
                loContaBancaria = new ContaBancaria();

            loContaBancaria.CnbDsConta = "Conta da empresa";
            loContaBancaria.CnbDtAbertura = Convert.ToDateTime(Column_CnbDtAbertura.value);
            loContaBancaria.CnbNuConta = Column_CnbNuConta.Text;
            loContaBancaria.CnbNuDigitoConta = Column_CnbNuDigitoConta.Text;
            loContaBancaria.CnbVlSaldoInicial = Convert.ToDecimal(Column_CnbVlSaldoInicial.value);
            loContaBancaria.CnbTpProprietario = "";
            loContaBancaria.Agencia = loAgencia;

            // ---------------------------------
            // Cadastro da Convenio
            // ---------------------------------
            int liIdConvenio = Column_CvnIdConvenio.Value == "" ? 0 : Convert.ToInt32(Column_CvnIdConvenio.Value);

            IConvenioDAL loConvenioDAO = ConcreteDALFactory.CreateConvenioDAL();

            Convenio loConvenio = loConvenioDAO.Load(new ConvenioPK(liIdConvenio));
            if (loConvenio == null)
                loConvenio = new Convenio();

            loConvenio.CvnCdCedente = Column_CvnCdCedente.Text;
            loConvenio.ContaBancaria = loContaBancaria;
            loConvenio.CvnCdVariacao = "0;";
            loConvenio.CvnNuProximoNossoNumero = "1";

            ControladorDaCredito.GetInstance().CadastrarContaBancariaEmpresa(loContaBancaria, loAgencia, loConvenio, loBanco);


            return true;
        }

        protected override void CarregaEntidadesPagina()
        {

            ContaBancaria loContaBancaria = ControladorDaCredito.GetInstance().RecuperaContaBancariaEmpresa();

            if (loContaBancaria != null)
            {
                this.CarregaEntidadePagina(typeof(ContaBancaria), loContaBancaria);


                if (loContaBancaria.Agencia != null)
                {
                    this.CarregaEntidadePagina(typeof(Agencia), loContaBancaria.Agencia);

                    if (loContaBancaria.Agencia.Banco != null)
                    {
                        this.CarregaEntidadePagina(typeof(Banco), loContaBancaria.Agencia.Banco);
                    }

                }
              
                if (loContaBancaria.Convenio.Count > 0)
                {
                    IEnumerator ddd = loContaBancaria.Convenio.GetEnumerator();
                    ddd.MoveNext();
                    this.CarregaEntidadePagina(typeof(Convenio), ddd.Current);
                }
            }


        }

    }
}
